The latest release information about the Sitecore E-Commerce Services.
We welcome your feedback. On the forum pages, we have set up 2 forums:
- Sitecore E-Commerce. The main forum.
- Sitecore E-Commerce suggestions for submitting suggestions for new features and improvements.
1. Release History
Some of the issues described on this page contain internal reference numbers listed in parentheses. You can use these reference numbers to communicate with Sitecore about a particular issue or feature.
February 21, 2014
Sitecore E-Commerce Services 2.2 rev. 140219 is released.
Tested with Sitecore CMS and DMS 7.0 rev. 140120 (7.0 Update-4), Sitecore CMS and DMS 7.1 rev. 140130 (7.1 Update-1), Sitecore CMS and DMS 7.2 (Pre-release), and Sitecore CMS and DMS 7.0 rev. 140120 on Azure with Azure module v 3.1
Compatibility
This version of the module only runs on Sitecore 7.0 and DMS 7.0 or later.
Change log
New Features:
- Improved Multi-shop support
-
Scalability
- It’s now possible to run SES 2.2 on Azure using the Azure module v3.1 on CMS 7.0, with the following caveats:
- No limitations for CD instances. So CD instances on Azure and CM on premises will work.
- Running CMs on Azure is working but with limitations. When running CM instances on Azure, it cannot be guaranteed that unique order IDs are generated with the default implementation. This is because there is no direct transactional support in CMS and Azure and it becomes a race condition to retrieve a unique order ID. Without custom business logic, creating orders will sometimes create a scenario where the same order ID is assigned to multiple orders for different customers.
- The Order Manager app is supported on Azure.
- Current release of WebForms is not supported on Azure and therefore cannot be used with SES. SES doesn’t require WebForms but it’s used with example pages. It’s possible to create solutions without it.
- It’s now possible to run SES 2.2 on Azure using the Azure module v3.1 on CMS 7.0, with the following caveats:
-
Multi-shop support
- A new ShopContextSwitcher API has been introduced, so it becomes possible to temporarily switch context in code.
-
Assigning products to pages
- A user can set order of manually picked products. It has become possible to change the order of the products when assigning products on items (virtual products on webpages). 367234
-
Order Management
- When a new order is submitted a validation check is automatically executed which checks for the quantity of ordered products. If any order line quantity exceeds a configured limit (default 100), the order is assigned a new state Suspicious and new sub-state Quantity. Other automatic order validation checks can be inserted in the pipeline OrderCreated as documented in the OM developer Cookbook. The last processor in the pipeline will change the order status to Open, if none of the validation checks have found anything suspicous. An order in state Open is ready to be manually processed and fulfilled by the Order Manager.
- It is possible to create a new blank order from within the OM application. A new action Create Order has been introduced. The functionality is created as an example of how to use the MOM API. For more information see the OM Developer Cookbook.
-
Miscellaneous
- Using DIBS as payment provider it is now possible to configure DIBS to skip the accept page and have SES still reserve/capture money.
Issues Resolved:
- Fixed the VAT calculation for product. Currently country is taken from "Default VAT region" setting in /sitecore/content/E-Commerce Examples/Home/Site Settings/General item (403800).
- Fixed the problem with url caching for "Resolve Products By Product Code" display mode (402991).
- Fixed the memory leak issue with the VisitorShopResolvingProcessor processor where the Sitecore.Ecommerce.Visitor.Pipelines.HttpRequest.VisitorShopResolvingProcessor replaced the child unity container by a new one and didn't dispose it. The replaced child container registered in a singleton object was never collected by the garbage collector. Moreover, the registered ShopContext objects could have indirect references to layouts and sublayouts through PageContext objects, thereby it sometimes caused memory leaks. (403995)
Order Management
- The calculated shopping cart total and the order total could previously differ on the second fractional decimal. This was caused due to limitations on the number of fractional decimals stored in the database. The number of fractional decimals stored in the database has been increased to 6 to increase the precision.
Order Manager Application
- Changing the state of an order and saving it will force a re-calculation. Due to limitations on fractional decimals in the database, the amounts previously could change on the second fractional decimal due to truncation (rounding down). The number of fractional decimals stored in the database has been increased to 6 to increase the precision.
Breaking changes
The following breaking changes have been introduced in the API:
- Abstract classes Sitecore.Ecommerce.OrderManagement.OrderIDGenerator and Sitecore.Ecommerce.OrderManagement.OrderIDGenerationStrategy were moved from the Sitecore.Ecommerce.Kernel assembly (core package) to the Sitecore.Ecommerce.DomainModel assembly (core package). For now they are within the Sitecore.Ecommerce.DomainModel.Orders namespace.
- Sitecore.Ecommerce.Apps.OrderManagement.DataSources.LastNewOrdersDataSourceRepository class from the Sitecore.Ecommerce.Apps assembly (order management package) is renamed to the LastIncomingOrdersDataSourceRepository.
- Sitecore.Ecommerce.Apps.Web.UI .WebControls.ShopContextSwitcher class from the Sitecore.Ecommerce.Apps assembly (order management package) is renamed to the ShopContextDropdown.
- ShopContext property of the Sitecore.Ecommerce.Data.EntityProvider<T>, Sitecore.Ecommerce.Kernel class (core package) has lost the setter.
- Values property of the Sitecore.Ecommerce.Apps .SpeakDateTimeExtractor, Sitecore.Ecommerce.Apps class (order management package) is removed.
-
Signature of the Extract method of theSitecore.Ecommerce.Apps .SpeakDateTimeExtractor, Sitecore.Ecommerce.Apps class (order management package) is changed from
public IList<DateTime> Extract(ref string expression)topublic string Extract(string expression)
2. Known issues
The following known issues are present in the latest version of the Sitecore E-Commerce Services:
General
- It is impossible to perform general workflow actions with orders stored in Content using the Content Editor. (380504)
- If you are installing SES, you need to install the example package to get the default states configuration for the Order Manager application.
- If the ”content” database attribute is not set on the Site definition in web.config, there’s a part of the Pricemanager that fails (391296).
Workaround:
Add the ContentDatabase attribute to the site setting in web.config. - When creating a new order, it is not possible to add charges or discounts to the list controls respectively. The functionality was left out, but the application can be customized to support it.
Scalability
- Running SES CM instances in Azure will not work by default, because transaction support is missing when writing to master database. This is the case with generating an order id, which by default is read and incremented as a value in CMS master database.
- A long eventQueue.processingInterval setting in web.config might cause a problem with loading orders from a selected webshop when an instance is in Azure. (378585)
Workaround:
Do not increase the default value of the processingInterval setting in web.config.<eventQueue>
<processingInterval>00:00:02</processingInterval>
</eventQueue>
Catalog
- An error might occur on a catalog item if you switch between items fast (391289).
Workaround:
Use the IE browser or select this item one more time. - Custom sorting and grouping is disabled in the product catalog and the old order catalog when searching and reviewing products and orders. (338268)
- Sometimes after the browser window is resized the Product Catalog and the old Order Catalog, the search forms are not resized appropriately. (329868)
Scenario:- Open the Content Editor in a non-maximized mode.
- Locate a Product Search Group item in the sample pages (e.g. /sitecore/content/E-Commerce Examples/Home/Digital SLR/Cameras).
- Drag the border of the Content Editor window to make it bigger.
- The Component Art components within the two boxes do not resize along with the Content Editor border.
- Select the current item once more in the tree structure to reload the item. After the reload the Component Art components are resized to fit the boxes.
- Product catalog displays java script error after saving in IE8. (336261)
Checkout
- System doesn't recalculate Shipping method price after changing the Display Currency value. (332173)
- А product cannot be bought when the mail server is not set up. (371432)
Shopping Cart
- The system does not recalculate the Shipping method price after changing the Display Currency value in Webshop Business Settings. (332173)
- Item Cloning doesn't work well with Lucene based product indexes that are used as default indexes in SES. Lucene creates duplicate index entries for cloned products. As a result, ShoppingCartManager.AddProduct may throw NullReferenceException as stock on cloned products is updated. (376466)
Workarounds:- The following workaround is only needed for versions before 2.0.0 rev.130111:
- Apply the code change to the default ProductRepositoryItem.GetItem: so it returns a non-null object (the changed code is highlighted in bold): this.Get(query, typeof(T)).FirstOrDefault( o => o != null);
This solves the problem in the way that the ProductRepository implementation returns a null object causing exceptions, by discarding null objects.
- Apply the code change to the default ProductRepositoryItem.GetItem: so it returns a non-null object (the changed code is highlighted in bold): this.Get(query, typeof(T)).FirstOrDefault( o => o != null);
- Add the Product Code field ID from the product template to the web.config setting ItemCloning.NonInheritedFields before cloning. If it is ok for the customer to keep separate stock values for the cloned repositories.
- Replace the FastQuerySearchProvider with the SitecoreQuerySearchProvider if the product code doesn't contain text. It will only match when the code is given exactly the same casing. If a null object is returned or Lucene is busy re-indexing, a secondary search provider will be used. Since the default FastQuerySearchProvider doesn't work with Item Cloning, the SitecoreQuerySearchProvider can be used.
- Change Product Code field value of the cloned product in order for the value to appear in SharedFields table.
- The following workaround is only needed for versions before 2.0.0 rev.130111:
Site Settings
- The Display Currency in Webshop Business Settings is not applied until the application is restarted. (336240, 336243)
- The SES Core package doesn’t include the ”general” item in the Site Settings, which is required for the default Pricemanager to work (391299).
Workaround:
Manually add the General item from the template as a subitem of the Site Settings item.
Example pages
- System displays the "The layout for the requested document was not found" after selecting product from Two/Three/Four column layout. (330964)
- The checkout confirmation page labels are shifted if the state is empty. (330700)
- Exception may occur after logout on Order Confirmation page. (367016)
- Example pages: System displays "We experienced a technical difficulty..." on Change Password form after entering the invalid old password. (345256)
- Example pages: The ZIP code field only accepts 4 digits even though the ZIP code can contain more than 4 digits during check out and customer address entry. (345102)
- 70 text entries are not localized in example pages: "Empty Cart", "Update Cart", "Continue Shopping", "List Price", "Total price excl. VAT", "Total price incl. VAT", "Proceed to checkout", "Shopping Cart", "The shopping cart is empty", "1 item in Shopping Cart", "Edit Shopping Cart" etc.
- The data from the Code/Name field are displayed for some items instead of the corresponding version of the Title value. (338365, 338422 and 338423)
- An exception is thrown on the Order Details (Examples) pages after the Shipping method is changed to non-existent. (368644)
- If you open the Product Details page from an order line for a product that was added in the Order Manager application, an exception is thrown. (376399)
Page Editor/Preview mode
- The system doesn't let you buy a product in the Preview mode. (335656)
Payment provider
- Amazon: Reservable type returns error if on "select Payment method" (on Amazon payment page) step you select "Pay with Amazon Payments Balance" method and confirm. (345143).
- Capturing an order does not work for PayPal. (376034)
- Absence of the "accept-charset="UTF-8" parameter in the request may cause issues on the DIBS payment provider end (392669).
Order Manager
- It is not possible to use the new Order Manager application with SES configured to use old order storage where orders are stored in Content.
- Removing an order line does not remove the actual order line data from the database, it only removes the reference between an order and an order line. (350660)
- Changing sub-state combinations in the Webshop Business Settings throws an exception for orders that are already in that state and sub-state. (356243)
- Some texts in the generated Order confirmation PDF are truncated if they are too long. (357063)
- If a user enters a non-numeric value in the Amount field for discounts or charges there is no user-friendly validation error message. (360504)
- It is impossible to create an order if the display currency is set to a currency where the code contains more than 3 letters, for example, Euro. The Order model expects the currency to use the ISO 3-letter standard. The currency code is used for both orders and payment providers. Some payment providers incorrectly expect the currency code to be four letters like Euro instead of the correct ISO 3-letter standard where Euro is represented as EUR. (364774)
- If you try to capture more money than the reserved amount, a warning message is displayed only after refreshing the page. (365219)
- The Order Confirmation can contain unnecessary <p> tags in the product description. (376402)
- Some page controls aren't refreshed in IE on a slow client computer. (379487)
Workaround:
Press F5 to see changes. - The smart panel with the Order line info isn’t closed if the user tries to add/change the product after searching for the product. (379961)
- Some content in Order Management application is not localized in case of distributed configuration (404196).
- Error occurs after clicking Send confirmation for order with non-specified email (404926).
SPEAK
- Duplicated orders may be displayed in the table after filtering by multiple criteria at the same time. For example if the user filters orders by one criteria and then checks another filter while the grid is the rows in the order grid may be duplicated. (369217)
- Accordion groups can expand beyond the expected width when they have been collapsed and the priority 1 fields contain too much text. (369191).
- Duplicated rows can be displayed in the table if you rapidly click on several different rows in the same grid. For example, if the user tries to open the smart panel with the Order Line information and clicks on the other Order Line rows while the smart panel is opening the order lines rows can be duplicated. (369217)
- It is impossible to change the order of the filter columns from the UI. (380151)
- It’s impossible to see and select the pre-defined filter options that are not selected if more than 3 filters are defined. (380098)
- SPEAK doesn’t support "classic" mode in IIS. (360632)
- User has access to Sitecore desktop after log out from SPEAK. (378956)
- On slow machines with a heavy load the client UI seems unresponsive and some of the controls may not be updated correctly. (379488)
- The item name is used as an expression value instead of the "Value" field on Expression groups. (380028)
- The SPEAK home page is opened with default local language labels instead of the configured user language. If the user navigates away from this page, all the following pages are localized correctly. (379057)
- The "Yes" and "No" buttons in SPEAK dialog boxes are not localizable. (378968)
- Product with code containing special symbols might not appear in smart panel search results (404589).
3. Configuration File Changes
This section describes the config file changes between SES releases.
3.1. Config file changes in SES 2.2 rev. 140219
The config file changes in SES 2.2 rev. 140219 compared to SES 2.1 rev. 130718.
Unity.config changes:
- Add the following aliases to <configuration><unity>
section: <alias alias="IOrderFactory" type="Sitecore.Ecommerce.OrderManagement.IOrderFactory, Sitecore.Ecommerce.Core" />
<alias alias="DefaultOrderFactory" type="Sitecore.Ecommerce.OrderManagement.DefaultOrderFactory, Sitecore.Ecommerce.Core" />
<alias alias="SuspiciousProductQuantityOrderProcessingStrategy" type="Sitecore.Ecommerce.Merchant.OrderManagement.SuspiciousProductQuantityOrderProcessingStrategy, Sitecore.Ecommerce.Merchant" /> - Replace the following node:<alias alias="OrderIDGenerationStrategy" type="Sitecore.Ecommerce.OrderManagement.OrderIDGenerationStrategy, Sitecore.Ecommerce.Kernel" />with:<alias alias="OrderIDGenerationStrategy" type="Sitecore.Ecommerce.DomainModel.Orders.OrderIDGenerationStrategy, Sitecore.Ecommerce.DomainModel" />
- Replace the following node:<alias alias="OrderIDGenerator" type="Sitecore.Ecommerce.OrderManagement.OrderIDGenerator, Sitecore.Ecommerce.Kernel" />with:<alias alias="OrderIDGenerator" type="Sitecore.Ecommerce.DomainModel.Orders.OrderIDGenerator, Sitecore.Ecommerce.DomainModel" />
- Add the following registrations to <configuration><unity><container> section:<register type="IOrderFactory" mapTo="DefaultOrderFactory" />
<register type="OrderProcessingStrategy" mapTo="SuspiciousProductQuantityOrderProcessingStrategy" name="SuspiciousProductQuantity" /> - Add the following property node:<property name="SuspiciousProductQuantityOrderProcessingStrategy" dependencyName="SuspiciousProductQuantity" />to the node:<register type="OrderProcessingStrategyResolver" mapTo="OrderProcessingStrategyResolverImpl">
- Remove the following node:<lifetime type="hierarchical" />from:<register type="LoggingProvider" mapTo="EfLoggingProvider">
Sitecore.Ecommerce.config changes:
- Add the following node to <sitecore><commands>
section: <command name="ses:updateBranchLinks" type="Sitecore.Ecommerce.CommandTemplates.UpdateBranchLinksCommand,Sitecore.Ecommerce.Core" /> - Add the following node to <sitecore><settings>
section: <setting name="Catalog.OpenInNewWindow" value="true" /> - Add the following node:<ShellSiteName>shell</ShellSiteName>to:<processor type="Sitecore.Ecommerce.Shell.Pipelines.HttpRequest.ShellShopResolver, Sitecore.Ecommerce.Shell" patch:after="*[@type='Sitecore.Ecommerce.Pipelines.HttpRequest.CreateRequestContainer, Sitecore.Ecommerce.Kernel']">
- In the <sitecore><pipelines><orderCreated> section, after the following node:<processor type="Sitecore.Ecommerce.Visitor.Pipelines.OrderCreated.NotifyCustomer, Sitecore.Ecommerce.Visitor" />add the following processor:<processor type="Sitecore.Ecommerce.Merchant.Pipelines.OrderCreated.CheckProductQuantity, Sitecore.Ecommerce.Merchant">
<MaximumQuantity>100</MaximumQuantity>
</processor>
<processor type="Sitecore.Ecommerce.Merchant.Pipelines.OrderCreated.TryOpenOrder, Sitecore.Ecommerce.Merchant" /> - In the following processor node:<processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.GetContentEditorFields.GetFields, Sitecore.Client">replace the node:<HiddenFields>{81AD5AA7-316C-4F79-9DFF-8FEBFCFBFB4E}|{4423D09D-E95A-4827-B12D-E682BE2DE834}|{39BB71D9-E6B4-4F50-BFAC-1C586724D3B9}|{4200DA93-E824-4FA0-B93B-5F9AB662E3DC}</HiddenFields>with:<HiddenFields>{39BB71D9-E6B4-4F50-BFAC-1C586724D3B9}|{4200DA93-E824-4FA0-B93B-5F9AB662E3DC}</HiddenFields>